#pragma once
#include "GLExt.h"
#include "GLWinExt.h"

// Part of:
// http://www.leocad.org/trac/browser/tags/leocad-0-73/common/opengl.h

// =============================================================================
// OpenGL functions typedefs

// Miscellaneous
typedef void (APIENTRY *PFNGLCLEARINDEX) (GLfloat c);
typedef void (APIENTRY *PFNGLCLEARCOLOR) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void (APIENTRY *PFNGLCLEAR) (GLbitfield mask);
typedef void (APIENTRY *PFNGLINDEXMASK) (GLuint mask);
typedef void (APIENTRY *PFNGLCOLORMASK) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (APIENTRY *PFNGLALPHAFUNC) (GLenum func, GLclampf ref);
typedef void (APIENTRY *PFNGLBLENDFUNC) (GLenum sfactor, GLenum dfactor);
typedef void (APIENTRY *PFNGLLOGICOP) (GLenum opcode);
typedef void (APIENTRY *PFNGLCULLFACE) (GLenum mode);
typedef void (APIENTRY *PFNGLFRONTFACE) (GLenum mode);
typedef void (APIENTRY *PFNGLPOINTSIZE) (GLfloat size);
typedef void (APIENTRY *PFNGLLINEWIDTH) (GLfloat width);
typedef void (APIENTRY *PFNGLLINESTIPPLE) (GLint factor, GLushort pattern);
typedef void (APIENTRY *PFNGLPOLYGONMODE) (GLenum face, GLenum mode);
typedef void (APIENTRY *PFNGLPOLYGONOFFSET) (GLfloat factor, GLfloat units);
typedef void (APIENTRY *PFNGLPOLYGONSTIPPLE) (const GLubyte *mask);
typedef void (APIENTRY *PFNGLGETPOLYGONSTIPPLE) (GLubyte *mask);
typedef void (APIENTRY *PFNGLEDGEFLAG) (GLboolean flag);
typedef void (APIENTRY *PFNGLEDGEFLAGV) (const GLboolean *flag);
typedef void (APIENTRY *PFNGLSCISSOR) (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLCLIPPLANE) (GLenum plane, const GLdouble *equation);
typedef void (APIENTRY *PFNGLGETCLIPPLANE) (GLenum plane, GLdouble *equation);
typedef void (APIENTRY *PFNGLDRAWBUFFER) (GLenum mode);
typedef void (APIENTRY *PFNGLREADBUFFER) (GLenum mode);
typedef void (APIENTRY *PFNGLENABLE) (GLenum cap);
typedef void (APIENTRY *PFNGLDISABLE) (GLenum cap);
typedef GLboolean (APIENTRY *PFNGLISENABLED) (GLenum cap);
typedef void (APIENTRY *PFNGLENABLECLIENTSTATE) (GLenum cap);
typedef void (APIENTRY *PFNGLDISABLECLIENTSTATE) (GLenum cap);
typedef void (APIENTRY *PFNGLGETBOOLEANV) (GLenum pname, GLboolean *params);
typedef void (APIENTRY *PFNGLGETDOUBLEV) (GLenum pname, GLdouble *params);
typedef void (APIENTRY *PFNGLGETFLOATV) (GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETINTEGERV) (GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLPUSHATTRIB) (GLbitfield mask);
typedef void (APIENTRY *PFNGLPOPATTRIB) (void);
typedef void (APIENTRY *PFNGLPUSHCLIENTATTRIB) (GLbitfield mask);
typedef void (APIENTRY *PFNGLPOPCLIENTATTRIB) (void);
typedef GLint (APIENTRY *PFNGLRENDERMODE) (GLenum mode);
typedef GLenum (APIENTRY *PFNGLGETERROR) (void);
typedef const GLubyte* (APIENTRY *PFNGLGETSTRING) (GLenum name);
typedef void (APIENTRY *PFNGLFINISH) (void);
typedef void (APIENTRY *PFNGLFLUSH) (void);
typedef void (APIENTRY *PFNGLHINT) (GLenum target, GLenum mode);

// Depth Buffer
typedef void (APIENTRY *PFNGLCLEARDEPTH) (GLclampd depth);
typedef void (APIENTRY *PFNGLDEPTHFUNC) (GLenum func);
typedef void (APIENTRY *PFNGLDEPTHMASK) (GLboolean flag);
typedef void (APIENTRY *PFNGLDEPTHRANGE) (GLclampd near_val, GLclampd far_val);

// Accumulation Buffer
typedef void (APIENTRY *PFNGLCLEARACCUM) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (APIENTRY *PFNGLACCUM) (GLenum op, GLfloat value);

// Transformation
typedef void (APIENTRY *PFNGLMATRIXMODE) (GLenum mode);
typedef void (APIENTRY *PFNGLORTHO) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val);
typedef void (APIENTRY *PFNGLFRUSTUM) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val);
typedef void (APIENTRY *PFNGLVIEWPORT) (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLPUSHMATRIX) (void);
typedef void (APIENTRY *PFNGLPOPMATRIX) (void);
typedef void (APIENTRY *PFNGLLOADIDENTITY) (void);
typedef void (APIENTRY *PFNGLLOADMATRIXD) (const GLdouble *m);
typedef void (APIENTRY *PFNGLLOADMATRIXF) (const GLfloat *m);
typedef void (APIENTRY *PFNGLMULTMATRIXD) (const GLdouble *m);
typedef void (APIENTRY *PFNGLMULTMATRIXF) (const GLfloat *m);
typedef void (APIENTRY *PFNGLROTATED) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLROTATEF) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLSCALED) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLSCALEF) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLTRANSLATED) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLTRANSLATEF) (GLfloat x, GLfloat y, GLfloat z);

// Display Lists
typedef GLboolean (APIENTRY *PFNGLISLIST) (GLuint list);
typedef void (APIENTRY *PFNGLDELETELISTS) (GLuint list, GLsizei range);
typedef GLuint (APIENTRY *PFNGLGENLISTS) (GLsizei range);
typedef void (APIENTRY *PFNGLNEWLIST) (GLuint list, GLenum mode);
typedef void (APIENTRY *PFNGLENDLIST) (void);
typedef void (APIENTRY *PFNGLCALLLIST) (GLuint list);
typedef void (APIENTRY *PFNGLCALLLISTS) (GLsizei n, GLenum type, const GLvoid *lists);
typedef void (APIENTRY *PFNGLLISTBASE) (GLuint base);

// Drawing Functions
typedef void (APIENTRY *PFNGLBEGIN) (GLenum mode);
typedef void (APIENTRY *PFNGLEND) (void);
typedef void (APIENTRY *PFNGLVERTEX2D) (GLdouble x, GLdouble y);
typedef void (APIENTRY *PFNGLVERTEX2F) (GLfloat x, GLfloat y);
typedef void (APIENTRY *PFNGLVERTEX2I) (GLint x, GLint y);
typedef void (APIENTRY *PFNGLVERTEX2S) (GLshort x, GLshort y);
typedef void (APIENTRY *PFNGLVERTEX3D) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLVERTEX3F) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLVERTEX3I) (GLint x, GLint y, GLint z);
typedef void (APIENTRY *PFNGLVERTEX3S) (GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY *PFNGLVERTEX4D) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY *PFNGLVERTEX4F) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY *PFNGLVERTEX4I) (GLint x, GLint y, GLint z, GLint w);
typedef void (APIENTRY *PFNGLVERTEX4S) (GLshort x, GLshort y, GLshort z, GLshort w);
typedef void (APIENTRY *PFNGLVERTEX2DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEX2FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEX2IV) (const GLint *v);
typedef void (APIENTRY *PFNGLVERTEX2SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEX3DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEX3FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEX3IV) (const GLint *v);
typedef void (APIENTRY *PFNGLVERTEX3SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEX4DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEX4FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEX4IV) (const GLint *v);
typedef void (APIENTRY *PFNGLVERTEX4SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLNORMAL3B) (GLbyte nx, GLbyte ny, GLbyte nz);
typedef void (APIENTRY *PFNGLNORMAL3D) (GLdouble nx, GLdouble ny, GLdouble nz);
typedef void (APIENTRY *PFNGLNORMAL3F) (GLfloat nx, GLfloat ny, GLfloat nz);
typedef void (APIENTRY *PFNGLNORMAL3I) (GLint nx, GLint ny, GLint nz);
typedef void (APIENTRY *PFNGLNORMAL3S) (GLshort nx, GLshort ny, GLshort nz);
typedef void (APIENTRY *PFNGLNORMAL3BV) (const GLbyte *v);
typedef void (APIENTRY *PFNGLNORMAL3DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLNORMAL3FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLNORMAL3IV) (const GLint *v);
typedef void (APIENTRY *PFNGLNORMAL3SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLINDEXD) (GLdouble c);
typedef void (APIENTRY *PFNGLINDEXF) (GLfloat c);
typedef void (APIENTRY *PFNGLINDEXI) (GLint c);
typedef void (APIENTRY *PFNGLINDEXS) (GLshort c);
typedef void (APIENTRY *PFNGLINDEXUB) (GLubyte c);
typedef void (APIENTRY *PFNGLINDEXDV) (const GLdouble *c);
typedef void (APIENTRY *PFNGLINDEXFV) (const GLfloat *c);
typedef void (APIENTRY *PFNGLINDEXIV) (const GLint *c);
typedef void (APIENTRY *PFNGLINDEXSV) (const GLshort *c);
typedef void (APIENTRY *PFNGLINDEXUBV) (const GLubyte *c);
typedef void (APIENTRY *PFNGLCOLOR3B) (GLbyte red, GLbyte green, GLbyte blue);
typedef void (APIENTRY *PFNGLCOLOR3D) (GLdouble red, GLdouble green, GLdouble blue);
typedef void (APIENTRY *PFNGLCOLOR3F) (GLfloat red, GLfloat green, GLfloat blue);
typedef void (APIENTRY *PFNGLCOLOR3I) (GLint red, GLint green, GLint blue);
typedef void (APIENTRY *PFNGLCOLOR3S) (GLshort red, GLshort green, GLshort blue);
typedef void (APIENTRY *PFNGLCOLOR3UB) (GLubyte red, GLubyte green, GLubyte blue);
typedef void (APIENTRY *PFNGLCOLOR3UI) (GLuint red, GLuint green, GLuint blue);
typedef void (APIENTRY *PFNGLCOLOR3US) (GLushort red, GLushort green, GLushort blue);
typedef void (APIENTRY *PFNGLCOLOR4B) (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
typedef void (APIENTRY *PFNGLCOLOR4D) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
typedef void (APIENTRY *PFNGLCOLOR4F) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (APIENTRY *PFNGLCOLOR4I) (GLint red, GLint green, GLint blue, GLint alpha);
typedef void (APIENTRY *PFNGLCOLOR4S) (GLshort red, GLshort green, GLshort blue, GLshort alpha);
typedef void (APIENTRY *PFNGLCOLOR4UB) (GLubyte red, GLubyte green,GLubyte blue, GLubyte alpha);
typedef void (APIENTRY *PFNGLCOLOR4UI) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
typedef void (APIENTRY *PFNGLCOLOR4US) (GLushort red, GLushort green, GLushort blue, GLushort alpha);
typedef void (APIENTRY *PFNGLCOLOR3BV) (const GLbyte *v);
typedef void (APIENTRY *PFNGLCOLOR3DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLCOLOR3FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLCOLOR3IV) (const GLint *v);
typedef void (APIENTRY *PFNGLCOLOR3SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLCOLOR3UBV) (const GLubyte *v);
typedef void (APIENTRY *PFNGLCOLOR3UIV) (const GLuint *v);
typedef void (APIENTRY *PFNGLCOLOR3USV) (const GLushort *v);
typedef void (APIENTRY *PFNGLCOLOR4BV) (const GLbyte *v);
typedef void (APIENTRY *PFNGLCOLOR4DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLCOLOR4FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLCOLOR4IV) (const GLint *v);
typedef void (APIENTRY *PFNGLCOLOR4SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLCOLOR4UBV) (const GLubyte *v);
typedef void (APIENTRY *PFNGLCOLOR4UIV) (const GLuint *v);
typedef void (APIENTRY *PFNGLCOLOR4USV) (const GLushort *v);
typedef void (APIENTRY *PFNGLTEXCOORD1D) (GLdouble s);
typedef void (APIENTRY *PFNGLTEXCOORD1F) (GLfloat s);
typedef void (APIENTRY *PFNGLTEXCOORD1I) (GLint s);
typedef void (APIENTRY *PFNGLTEXCOORD1S) (GLshort s);
typedef void (APIENTRY *PFNGLTEXCOORD2D) (GLdouble s, GLdouble t);
typedef void (APIENTRY *PFNGLTEXCOORD2F) (GLfloat s, GLfloat t);
typedef void (APIENTRY *PFNGLTEXCOORD2I) (GLint s, GLint t);
typedef void (APIENTRY *PFNGLTEXCOORD2S) (GLshort s, GLshort t);
typedef void (APIENTRY *PFNGLTEXCOORD3D) (GLdouble s, GLdouble t, GLdouble r);
typedef void (APIENTRY *PFNGLTEXCOORD3F) (GLfloat s, GLfloat t, GLfloat r);
typedef void (APIENTRY *PFNGLTEXCOORD3I) (GLint s, GLint t, GLint r);
typedef void (APIENTRY *PFNGLTEXCOORD3S) (GLshort s, GLshort t, GLshort r);
typedef void (APIENTRY *PFNGLTEXCOORD4D) (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
typedef void (APIENTRY *PFNGLTEXCOORD4F) (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
typedef void (APIENTRY *PFNGLTEXCOORD4I) (GLint s, GLint t, GLint r, GLint q);
typedef void (APIENTRY *PFNGLTEXCOORD4S) (GLshort s, GLshort t, GLshort r, GLshort q);
typedef void (APIENTRY *PFNGLTEXCOORD1DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD1FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD1IV) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD1SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORD2DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD2FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD2IV) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD2SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORD3DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD3FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD3IV) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD3SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORD4DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD4FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD4IV) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD4SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLRASTERPOS2D) (GLdouble x, GLdouble y);
typedef void (APIENTRY *PFNGLRASTERPOS2F) (GLfloat x, GLfloat y);
typedef void (APIENTRY *PFNGLRASTERPOS2I) (GLint x, GLint y);
typedef void (APIENTRY *PFNGLRASTERPOS2S) (GLshort x, GLshort y);
typedef void (APIENTRY *PFNGLRASTERPOS3D) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLRASTERPOS3F) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLRASTERPOS3I) (GLint x, GLint y, GLint z);
typedef void (APIENTRY *PFNGLRASTERPOS3S) (GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY *PFNGLRASTERPOS4D) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY *PFNGLRASTERPOS4F) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY *PFNGLRASTERPOS4I) (GLint x, GLint y, GLint z, GLint w);
typedef void (APIENTRY *PFNGLRASTERPOS4S) (GLshort x, GLshort y, GLshort z, GLshort w);
typedef void (APIENTRY *PFNGLRASTERPOS2DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLRASTERPOS2FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLRASTERPOS2IV) (const GLint *v);
typedef void (APIENTRY *PFNGLRASTERPOS2SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLRASTERPOS3DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLRASTERPOS3FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLRASTERPOS3IV) (const GLint *v);
typedef void (APIENTRY *PFNGLRASTERPOS3SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLRASTERPOS4DV) (const GLdouble *v);
typedef void (APIENTRY *PFNGLRASTERPOS4FV) (const GLfloat *v);
typedef void (APIENTRY *PFNGLRASTERPOS4IV) (const GLint *v);
typedef void (APIENTRY *PFNGLRASTERPOS4SV) (const GLshort *v);
typedef void (APIENTRY *PFNGLRECTD) (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
typedef void (APIENTRY *PFNGLRECTF) (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
typedef void (APIENTRY *PFNGLRECTI) (GLint x1, GLint y1, GLint x2, GLint y2);
typedef void (APIENTRY *PFNGLRECTS) (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
typedef void (APIENTRY *PFNGLRECTDV) (const GLdouble *v1, const GLdouble *v2);
typedef void (APIENTRY *PFNGLRECTFV) (const GLfloat *v1, const GLfloat *v2);
typedef void (APIENTRY *PFNGLRECTIV) (const GLint *v1, const GLint *v2);
typedef void (APIENTRY *PFNGLRECTSV) (const GLshort *v1, const GLshort *v2);

// Vertex Arrays
typedef void (APIENTRY *PFNGLVERTEXPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
typedef void (APIENTRY *PFNGLNORMALPOINTER) (GLenum type, GLsizei stride, const GLvoid *ptr);
typedef void (APIENTRY *PFNGLCOLORPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
typedef void (APIENTRY *PFNGLINDEXPOINTER) (GLenum type, GLsizei stride, const GLvoid *ptr);
typedef void (APIENTRY *PFNGLTEXCOORDPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
typedef void (APIENTRY *PFNGLEDGEFLAGPOINTER) (GLsizei stride, const GLvoid *ptr);
typedef void (APIENTRY *PFNGLGETPOINTERV) (GLenum pname, void **params);
typedef void (APIENTRY *PFNGLARRAYELEMENT) (GLint i);
typedef void (APIENTRY *PFNGLDRAWARRAYS) (GLenum mode, GLint first, GLsizei count);
typedef void (APIENTRY *PFNGLDRAWELEMENTS) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
typedef void (APIENTRY *PFNGLINTERLEAVEDARRAYS) (GLenum format, GLsizei stride, const GLvoid *pointer);

// Lighting
typedef void (APIENTRY *PFNGLSHADEMODEL) (GLenum mode);
typedef void (APIENTRY *PFNGLLIGHTF) (GLenum light, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLLIGHTI) (GLenum light, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLLIGHTFV) (GLenum light, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLLIGHTIV) (GLenum light, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLGETLIGHTFV) (GLenum light, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETLIGHTIV) (GLenum light, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLLIGHTMODELF) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLLIGHTMODELI) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLLIGHTMODELFV) (GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLLIGHTMODELIV) (GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLMATERIALF) (GLenum face, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLMATERIALI) (GLenum face, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLMATERIALFV) (GLenum face, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLMATERIALIV) (GLenum face, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLGETMATERIALFV) (GLenum face, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETMATERIALIV) (GLenum face, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLCOLORMATERIAL) (GLenum face, GLenum mode);

// Raster functions
typedef void (APIENTRY *PFNGLPIXELZOOM) (GLfloat xfactor, GLfloat yfactor);
typedef void (APIENTRY *PFNGLPIXELSTOREF) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLPIXELSTOREI) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLPIXELTRANSFERF) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLPIXELTRANSFERI) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLPIXELMAPFV) (GLenum map, GLint mapsize, const GLfloat *values);
typedef void (APIENTRY *PFNGLPIXELMAPUIV) (GLenum map, GLint mapsize, const GLuint *values);
typedef void (APIENTRY *PFNGLPIXELMAPUSV) (GLenum map, GLint mapsize, const GLushort *values);
typedef void (APIENTRY *PFNGLGETPIXELMAPFV) (GLenum map, GLfloat *values);
typedef void (APIENTRY *PFNGLGETPIXELMAPUIV) (GLenum map, GLuint *values);
typedef void (APIENTRY *PFNGLGETPIXELMAPUSV) (GLenum map, GLushort *values);
typedef void (APIENTRY *PFNGLBITMAP) (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap );
typedef void (APIENTRY *PFNGLREADPIXELS) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
typedef void (APIENTRY *PFNGLDRAWPIXELS) (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLCOPYPIXELS) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);

// Stenciling
typedef void (APIENTRY *PFNGLSTENCILFUNC) (GLenum func, GLint ref, GLuint mask);
typedef void (APIENTRY *PFNGLSTENCILMASK) (GLuint mask);
typedef void (APIENTRY *PFNGLSTENCILOP) (GLenum fail, GLenum zfail, GLenum zpass);
typedef void (APIENTRY *PFNGLCLEARSTENCIL) (GLint s);

// Texture mapping
typedef void (APIENTRY *PFNGLTEXGEND) (GLenum coord, GLenum pname, GLdouble param);
typedef void (APIENTRY *PFNGLTEXGENF) (GLenum coord, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLTEXGENI) (GLenum coord, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLTEXGENDV) (GLenum coord, GLenum pname, const GLdouble *params);
typedef void (APIENTRY *PFNGLTEXGENFV) (GLenum coord, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLTEXGENIV) (GLenum coord, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLGETTEXGENDV) (GLenum coord, GLenum pname, GLdouble *params);
typedef void (APIENTRY *PFNGLGETTEXGENFV) (GLenum coord, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXGENIV) (GLenum coord, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLTEXENVF) (GLenum target, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLTEXENVI) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLTEXENVFV) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLTEXENVIV) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLGETTEXENVFV) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXENVIV) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLTEXPARAMETERF) (GLenum target, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLTEXPARAMETERI) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLTEXPARAMETERFV) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLTEXPARAMETERIV) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLGETTEXPARAMETERFV) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXPARAMETERIV) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETTEXLEVELPARAMETERFV) (GLenum target, GLint level, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXLEVELPARAMETERIV) (GLenum target, GLint level, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLTEXIMAGE1D) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTEXIMAGE2D) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLGETTEXIMAGE) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
typedef void (APIENTRY *PFNGLGENTEXTURES) (GLsizei n, GLuint *textures);
typedef void (APIENTRY *PFNGLDELETETEXTURES) (GLsizei n, const GLuint *textures);
typedef void (APIENTRY *PFNGLBINDTEXTURE) (GLenum target, GLuint texture);
typedef void (APIENTRY *PFNGLPRIORITIZETEXTURES) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
typedef GLboolean (APIENTRY *PFNGLARETEXTURESRESIDENT) (GLsizei n, const GLuint *textures, GLboolean *residences);
typedef GLboolean (APIENTRY *PFNGLISTEXTURE) (GLuint texture);
typedef void (APIENTRY *PFNGLTEXSUBIMAGE1D) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTEXSUBIMAGE2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLCOPYTEXIMAGE1D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef void (APIENTRY *PFNGLCOPYTEXIMAGE2D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void (APIENTRY *PFNGLCOPYTEXSUBIMAGE1D) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef void (APIENTRY *PFNGLCOPYTEXSUBIMAGE2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);

// Evaluators
typedef void (APIENTRY *PFNGLMAP1D) (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
typedef void (APIENTRY *PFNGLMAP1F) (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
typedef void (APIENTRY *PFNGLMAP2D) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
typedef void (APIENTRY *PFNGLMAP2F) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
typedef void (APIENTRY *PFNGLGETMAPDV) (GLenum target, GLenum query, GLdouble *v);
typedef void (APIENTRY *PFNGLGETMAPFV) (GLenum target, GLenum query, GLfloat *v);
typedef void (APIENTRY *PFNGLGETMAPIV) (GLenum target, GLenum query, GLint *v);
typedef void (APIENTRY *PFNGLEVALCOORD1D) (GLdouble u);
typedef void (APIENTRY *PFNGLEVALCOORD1F) (GLfloat u);
typedef void (APIENTRY *PFNGLEVALCOORD1DV) (const GLdouble *u);
typedef void (APIENTRY *PFNGLEVALCOORD1FV) (const GLfloat *u);
typedef void (APIENTRY *PFNGLEVALCOORD2D) (GLdouble u, GLdouble v);
typedef void (APIENTRY *PFNGLEVALCOORD2F) (GLfloat u, GLfloat v);
typedef void (APIENTRY *PFNGLEVALCOORD2DV) (const GLdouble *u);
typedef void (APIENTRY *PFNGLEVALCOORD2FV) (const GLfloat *u);
typedef void (APIENTRY *PFNGLMAPGRID1D) (GLint un, GLdouble u1, GLdouble u2);
typedef void (APIENTRY *PFNGLMAPGRID1F) (GLint un, GLfloat u1, GLfloat u2);
typedef void (APIENTRY *PFNGLMAPGRID2D) (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
typedef void (APIENTRY *PFNGLMAPGRID2F) (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
typedef void (APIENTRY *PFNGLEVALPOINT1) (GLint i);
typedef void (APIENTRY *PFNGLEVALPOINT2) (GLint i, GLint j);
typedef void (APIENTRY *PFNGLEVALMESH1) (GLenum mode, GLint i1, GLint i2);
typedef void (APIENTRY *PFNGLEVALMESH2) (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);

// Fog
typedef void (APIENTRY *PFNGLFOGF) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLFOGI) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLFOGFV) (GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLFOGIV) (GLenum pname, const GLint *params);

// Selection and Feedback
typedef void (APIENTRY *PFNGLFEEDBACKBUFFER) (GLsizei size, GLenum type, GLfloat *buffer);
typedef void (APIENTRY *PFNGLPASSTHROUGH) (GLfloat token);
typedef void (APIENTRY *PFNGLSELECTBUFFER) (GLsizei size, GLuint *buffer);
typedef void (APIENTRY *PFNGLINITNAMES) (void);
typedef void (APIENTRY *PFNGLLOADNAME) (GLuint name);
typedef void (APIENTRY *PFNGLPUSHNAME) (GLuint name);
typedef void (APIENTRY *PFNGLPOPNAME) (void);

// Part of:
// https://trac.macports.org/attachment/ticket/20804/gl.h

typedef void (APIENTRY *PFNGLACCUMPROC) (GLenum op, GLfloat value);
typedef void (APIENTRY *PFNGLALPHAFUNCPROC) (GLenum func, GLclampf ref);
typedef GLboolean (APIENTRY *PFNGLARETEXTURESRESIDENTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
typedef void (APIENTRY *PFNGLARRAYELEMENTPROC) (GLint i);
typedef void (APIENTRY *PFNGLBEGINPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
typedef void (APIENTRY *PFNGLBITMAPPROC) (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
typedef void (APIENTRY *PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void (APIENTRY *PFNGLBLENDEQUATIONPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
typedef void (APIENTRY *PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
typedef void (APIENTRY *PFNGLCALLLISTPROC) (GLuint list);
typedef void (APIENTRY *PFNGLCALLLISTSPROC) (GLsizei n, GLenum type, const GLvoid *lists);
typedef void (APIENTRY *PFNGLCLEARPROC) (GLbitfield mask);
typedef void (APIENTRY *PFNGLCLEARACCUMPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (APIENTRY *PFNGLCLEARCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void (APIENTRY *PFNGLCLEARDEPTHPROC) (GLclampd depth);
typedef void (APIENTRY *PFNGLCLEARINDEXPROC) (GLfloat c);
typedef void (APIENTRY *PFNGLCLEARSTENCILPROC) (GLint s);
typedef void (APIENTRY *PFNGLCLIPPLANEPROC) (GLenum plane, const GLdouble *equation);
typedef void (APIENTRY *PFNGLCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
typedef void (APIENTRY *PFNGLCOLOR3BVPROC) (const GLbyte *v);
typedef void (APIENTRY *PFNGLCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
typedef void (APIENTRY *PFNGLCOLOR3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
typedef void (APIENTRY *PFNGLCOLOR3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLCOLOR3IPROC) (GLint red, GLint green, GLint blue);
typedef void (APIENTRY *PFNGLCOLOR3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
typedef void (APIENTRY *PFNGLCOLOR3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
typedef void (APIENTRY *PFNGLCOLOR3UBVPROC) (const GLubyte *v);
typedef void (APIENTRY *PFNGLCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
typedef void (APIENTRY *PFNGLCOLOR3UIVPROC) (const GLuint *v);
typedef void (APIENTRY *PFNGLCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
typedef void (APIENTRY *PFNGLCOLOR3USVPROC) (const GLushort *v);
typedef void (APIENTRY *PFNGLCOLOR4BPROC) (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
typedef void (APIENTRY *PFNGLCOLOR4BVPROC) (const GLbyte *v);
typedef void (APIENTRY *PFNGLCOLOR4DPROC) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
typedef void (APIENTRY *PFNGLCOLOR4DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLCOLOR4FPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void (APIENTRY *PFNGLCOLOR4FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLCOLOR4IPROC) (GLint red, GLint green, GLint blue, GLint alpha);
typedef void (APIENTRY *PFNGLCOLOR4IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLCOLOR4SPROC) (GLshort red, GLshort green, GLshort blue, GLshort alpha);
typedef void (APIENTRY *PFNGLCOLOR4SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLCOLOR4UBPROC) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
typedef void (APIENTRY *PFNGLCOLOR4UBVPROC) (const GLubyte *v);
typedef void (APIENTRY *PFNGLCOLOR4UIPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);
typedef void (APIENTRY *PFNGLCOLOR4UIVPROC) (const GLuint *v);
typedef void (APIENTRY *PFNGLCOLOR4USPROC) (GLushort red, GLushort green, GLushort blue, GLushort alpha);
typedef void (APIENTRY *PFNGLCOLOR4USVPROC) (const GLushort *v);
typedef void (APIENTRY *PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void (APIENTRY *PFNGLCOLORMATERIALPROC) (GLenum face, GLenum mode);
typedef void (APIENTRY *PFNGLCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
typedef void (APIENTRY *PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
typedef void (APIENTRY *PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
typedef void (APIENTRY *PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
typedef void (APIENTRY *PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);
typedef void (APIENTRY *PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);
typedef void (APIENTRY *PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
typedef void (APIENTRY *PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
typedef void (APIENTRY *PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
typedef void (APIENTRY *PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLCOPYPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
typedef void (APIENTRY *PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef void (APIENTRY *PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void (APIENTRY *PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef void (APIENTRY *PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLCULLFACEPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLDELETELISTSPROC) (GLuint list, GLsizei range);
typedef void (APIENTRY *PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
typedef void (APIENTRY *PFNGLDEPTHFUNCPROC) (GLenum func);
typedef void (APIENTRY *PFNGLDEPTHMASKPROC) (GLboolean flag);
typedef void (APIENTRY *PFNGLDEPTHRANGEPROC) (GLclampd zNear, GLclampd zFar);
typedef void (APIENTRY *PFNGLDISABLEPROC) (GLenum cap);
typedef void (APIENTRY *PFNGLDISABLECLIENTSTATEPROC) (GLenum array);
typedef void (APIENTRY *PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
typedef void (APIENTRY *PFNGLDRAWBUFFERPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
typedef void (APIENTRY *PFNGLDRAWPIXELSPROC) (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
typedef void (APIENTRY *PFNGLEDGEFLAGPROC) (GLboolean flag);
typedef void (APIENTRY *PFNGLEDGEFLAGPOINTERPROC) (GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLEDGEFLAGVPROC) (const GLboolean *flag);
typedef void (APIENTRY *PFNGLENABLEPROC) (GLenum cap);
typedef void (APIENTRY *PFNGLENABLECLIENTSTATEPROC) (GLenum array);
typedef void (APIENTRY *PFNGLENDPROC) (void);
typedef void (APIENTRY *PFNGLENDLISTPROC) (void);
typedef void (APIENTRY *PFNGLEVALCOORD1DPROC) (GLdouble u);
typedef void (APIENTRY *PFNGLEVALCOORD1DVPROC) (const GLdouble *u);
typedef void (APIENTRY *PFNGLEVALCOORD1FPROC) (GLfloat u);
typedef void (APIENTRY *PFNGLEVALCOORD1FVPROC) (const GLfloat *u);
typedef void (APIENTRY *PFNGLEVALCOORD2DPROC) (GLdouble u, GLdouble v);
typedef void (APIENTRY *PFNGLEVALCOORD2DVPROC) (const GLdouble *u);
typedef void (APIENTRY *PFNGLEVALCOORD2FPROC) (GLfloat u, GLfloat v);
typedef void (APIENTRY *PFNGLEVALCOORD2FVPROC) (const GLfloat *u);
typedef void (APIENTRY *PFNGLEVALMESH1PROC) (GLenum mode, GLint i1, GLint i2);
typedef void (APIENTRY *PFNGLEVALMESH2PROC) (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
typedef void (APIENTRY *PFNGLEVALPOINT1PROC) (GLint i);
typedef void (APIENTRY *PFNGLEVALPOINT2PROC) (GLint i, GLint j);
typedef void (APIENTRY *PFNGLFEEDBACKBUFFERPROC) (GLsizei size, GLenum type, GLfloat *buffer);
typedef void (APIENTRY *PFNGLFINISHPROC) (void);
typedef void (APIENTRY *PFNGLFLUSHPROC) (void);
typedef void (APIENTRY *PFNGLFOGFPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLFOGFVPROC) (GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLFOGIPROC) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLFOGIVPROC) (GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLFRONTFACEPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLFRUSTUMPROC) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
typedef GLuint (APIENTRY *PFNGLGENLISTSPROC) (GLsizei range);
typedef void (APIENTRY *PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
typedef void (APIENTRY *PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *params);
typedef void (APIENTRY *PFNGLGETCLIPPLANEPROC) (GLenum plane, GLdouble *equation);
typedef void (APIENTRY *PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table);
typedef void (APIENTRY *PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image);
typedef void (APIENTRY *PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *params);
typedef GLenum (APIENTRY *PFNGLGETERRORPROC) (void);
typedef void (APIENTRY *PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
typedef void (APIENTRY *PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETLIGHTFVPROC) (GLenum light, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETLIGHTIVPROC) (GLenum light, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETMAPDVPROC) (GLenum target, GLenum query, GLdouble *v);
typedef void (APIENTRY *PFNGLGETMAPFVPROC) (GLenum target, GLenum query, GLfloat *v);
typedef void (APIENTRY *PFNGLGETMAPIVPROC) (GLenum target, GLenum query, GLint *v);
typedef void (APIENTRY *PFNGLGETMATERIALFVPROC) (GLenum face, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETMATERIALIVPROC) (GLenum face, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
typedef void (APIENTRY *PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETPIXELMAPFVPROC) (GLenum map, GLfloat *values);
typedef void (APIENTRY *PFNGLGETPIXELMAPUIVPROC) (GLenum map, GLuint *values);
typedef void (APIENTRY *PFNGLGETPIXELMAPUSVPROC) (GLenum map, GLushort *values);
typedef void (APIENTRY *PFNGLGETPOINTERVPROC) (GLenum pname, GLvoid* *params);
typedef void (APIENTRY *PFNGLGETPOLYGONSTIPPLEPROC) (GLubyte *mask);
typedef void (APIENTRY *PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
typedef const GLubyte * (APIENTRY *PFNGLGETSTRINGPROC) (GLenum name);
typedef void (APIENTRY *PFNGLGETTEXENVFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXENVIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETTEXGENDVPROC) (GLenum coord, GLenum pname, GLdouble *params);
typedef void (APIENTRY *PFNGLGETTEXGENFVPROC) (GLenum coord, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXGENIVPROC) (GLenum coord, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
typedef void (APIENTRY *PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLHINTPROC) (GLenum target, GLenum mode);
typedef void (APIENTRY *PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
typedef void (APIENTRY *PFNGLINDEXMASKPROC) (GLuint mask);
typedef void (APIENTRY *PFNGLINDEXPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLINDEXDPROC) (GLdouble c);
typedef void (APIENTRY *PFNGLINDEXDVPROC) (const GLdouble *c);
typedef void (APIENTRY *PFNGLINDEXFPROC) (GLfloat c);
typedef void (APIENTRY *PFNGLINDEXFVPROC) (const GLfloat *c);
typedef void (APIENTRY *PFNGLINDEXIPROC) (GLint c);
typedef void (APIENTRY *PFNGLINDEXIVPROC) (const GLint *c);
typedef void (APIENTRY *PFNGLINDEXSPROC) (GLshort c);
typedef void (APIENTRY *PFNGLINDEXSVPROC) (const GLshort *c);
typedef void (APIENTRY *PFNGLINDEXUBPROC) (GLubyte c);
typedef void (APIENTRY *PFNGLINDEXUBVPROC) (const GLubyte *c);
typedef void (APIENTRY *PFNGLINITNAMESPROC) (void);
typedef void (APIENTRY *PFNGLINTERLEAVEDARRAYSPROC) (GLenum format, GLsizei stride, const GLvoid *pointer);
typedef GLboolean (APIENTRY *PFNGLISENABLEDPROC) (GLenum cap);
typedef GLboolean (APIENTRY *PFNGLISLISTPROC) (GLuint list);
typedef GLboolean (APIENTRY *PFNGLISTEXTUREPROC) (GLuint texture);
typedef void (APIENTRY *PFNGLLIGHTMODELFPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLLIGHTMODELFVPROC) (GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLLIGHTMODELIPROC) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLLIGHTMODELIVPROC) (GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLLIGHTFPROC) (GLenum light, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLLIGHTFVPROC) (GLenum light, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLLIGHTIPROC) (GLenum light, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLLIGHTIVPROC) (GLenum light, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLLINESTIPPLEPROC) (GLint factor, GLushort pattern);
typedef void (APIENTRY *PFNGLLINEWIDTHPROC) (GLfloat width);
typedef void (APIENTRY *PFNGLLISTBASEPROC) (GLuint base);
typedef void (APIENTRY *PFNGLLOADIDENTITYPROC) (void);
typedef void (APIENTRY *PFNGLLOADMATRIXDPROC) (const GLdouble *m);
typedef void (APIENTRY *PFNGLLOADMATRIXFPROC) (const GLfloat *m);
typedef void (APIENTRY *PFNGLLOADNAMEPROC) (GLuint name);
typedef void (APIENTRY *PFNGLLOGICOPPROC) (GLenum opcode);
typedef void (APIENTRY *PFNGLMAP1DPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
typedef void (APIENTRY *PFNGLMAP1FPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
typedef void (APIENTRY *PFNGLMAP2DPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
typedef void (APIENTRY *PFNGLMAP2FPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
typedef void (APIENTRY *PFNGLMAPGRID1DPROC) (GLint un, GLdouble u1, GLdouble u2);
typedef void (APIENTRY *PFNGLMAPGRID1FPROC) (GLint un, GLfloat u1, GLfloat u2);
typedef void (APIENTRY *PFNGLMAPGRID2DPROC) (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
typedef void (APIENTRY *PFNGLMAPGRID2FPROC) (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
typedef void (APIENTRY *PFNGLMATERIALFPROC) (GLenum face, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLMATERIALFVPROC) (GLenum face, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLMATERIALIPROC) (GLenum face, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLMATERIALIVPROC) (GLenum face, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLMATRIXMODEPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);
typedef void (APIENTRY *PFNGLMULTMATRIXDPROC) (const GLdouble *m);
typedef void (APIENTRY *PFNGLMULTMATRIXFPROC) (const GLfloat *m);
typedef void (APIENTRY *PFNGLNEWLISTPROC) (GLuint list, GLenum mode);
typedef void (APIENTRY *PFNGLNORMAL3BPROC) (GLbyte nx, GLbyte ny, GLbyte nz);
typedef void (APIENTRY *PFNGLNORMAL3BVPROC) (const GLbyte *v);
typedef void (APIENTRY *PFNGLNORMAL3DPROC) (GLdouble nx, GLdouble ny, GLdouble nz);
typedef void (APIENTRY *PFNGLNORMAL3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLNORMAL3FPROC) (GLfloat nx, GLfloat ny, GLfloat nz);
typedef void (APIENTRY *PFNGLNORMAL3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLNORMAL3IPROC) (GLint nx, GLint ny, GLint nz);
typedef void (APIENTRY *PFNGLNORMAL3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLNORMAL3SPROC) (GLshort nx, GLshort ny, GLshort nz);
typedef void (APIENTRY *PFNGLNORMAL3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLNORMALPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLORTHOPROC) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
typedef void (APIENTRY *PFNGLPASSTHROUGHPROC) (GLfloat token);
typedef void (APIENTRY *PFNGLPIXELMAPFVPROC) (GLenum map, GLint mapsize, const GLfloat *values);
typedef void (APIENTRY *PFNGLPIXELMAPUIVPROC) (GLenum map, GLint mapsize, const GLuint *values);
typedef void (APIENTRY *PFNGLPIXELMAPUSVPROC) (GLenum map, GLint mapsize, const GLushort *values);
typedef void (APIENTRY *PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLPIXELTRANSFERFPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLPIXELTRANSFERIPROC) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLPIXELZOOMPROC) (GLfloat xfactor, GLfloat yfactor);
typedef void (APIENTRY *PFNGLPOINTSIZEPROC) (GLfloat size);
typedef void (APIENTRY *PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
typedef void (APIENTRY *PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
typedef void (APIENTRY *PFNGLPOLYGONSTIPPLEPROC) (const GLubyte *mask);
typedef void (APIENTRY *PFNGLPOPATTRIBPROC) (void);
typedef void (APIENTRY *PFNGLPOPCLIENTATTRIBPROC) (void);
typedef void (APIENTRY *PFNGLPOPMATRIXPROC) (void);
typedef void (APIENTRY *PFNGLPOPNAMEPROC) (void);
typedef void (APIENTRY *PFNGLPRIORITIZETEXTURESPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
typedef void (APIENTRY *PFNGLPUSHATTRIBPROC) (GLbitfield mask);
typedef void (APIENTRY *PFNGLPUSHCLIENTATTRIBPROC) (GLbitfield mask);
typedef void (APIENTRY *PFNGLPUSHMATRIXPROC) (void);
typedef void (APIENTRY *PFNGLPUSHNAMEPROC) (GLuint name);
typedef void (APIENTRY *PFNGLRASTERPOS2DPROC) (GLdouble x, GLdouble y);
typedef void (APIENTRY *PFNGLRASTERPOS2DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLRASTERPOS2FPROC) (GLfloat x, GLfloat y);
typedef void (APIENTRY *PFNGLRASTERPOS2FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLRASTERPOS2IPROC) (GLint x, GLint y);
typedef void (APIENTRY *PFNGLRASTERPOS2IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLRASTERPOS2SPROC) (GLshort x, GLshort y);
typedef void (APIENTRY *PFNGLRASTERPOS2SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLRASTERPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLRASTERPOS3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLRASTERPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLRASTERPOS3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLRASTERPOS3IPROC) (GLint x, GLint y, GLint z);
typedef void (APIENTRY *PFNGLRASTERPOS3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLRASTERPOS3SPROC) (GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY *PFNGLRASTERPOS3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLRASTERPOS4DPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY *PFNGLRASTERPOS4DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLRASTERPOS4FPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY *PFNGLRASTERPOS4FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLRASTERPOS4IPROC) (GLint x, GLint y, GLint z, GLint w);
typedef void (APIENTRY *PFNGLRASTERPOS4IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLRASTERPOS4SPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
typedef void (APIENTRY *PFNGLRASTERPOS4SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLREADBUFFERPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
typedef void (APIENTRY *PFNGLRECTDPROC) (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
typedef void (APIENTRY *PFNGLRECTDVPROC) (const GLdouble *v1, const GLdouble *v2);
typedef void (APIENTRY *PFNGLRECTFPROC) (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
typedef void (APIENTRY *PFNGLRECTFVPROC) (const GLfloat *v1, const GLfloat *v2);
typedef void (APIENTRY *PFNGLRECTIPROC) (GLint x1, GLint y1, GLint x2, GLint y2);
typedef void (APIENTRY *PFNGLRECTIVPROC) (const GLint *v1, const GLint *v2);
typedef void (APIENTRY *PFNGLRECTSPROC) (GLshort x1, GLshort y1, GLshort x2, GLshort y2);
typedef void (APIENTRY *PFNGLRECTSVPROC) (const GLshort *v1, const GLshort *v2);
typedef GLint (APIENTRY *PFNGLRENDERMODEPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLRESETHISTOGRAMPROC) (GLenum target);
typedef void (APIENTRY *PFNGLRESETMINMAXPROC) (GLenum target);
typedef void (APIENTRY *PFNGLROTATEDPROC) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLROTATEFPROC) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLSCALEDPROC) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLSCALEFPROC) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLSELECTBUFFERPROC) (GLsizei size, GLuint *buffer);
typedef void (APIENTRY *PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
typedef void (APIENTRY *PFNGLSHADEMODELPROC) (GLenum mode);
typedef void (APIENTRY *PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
typedef void (APIENTRY *PFNGLSTENCILMASKPROC) (GLuint mask);
typedef void (APIENTRY *PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
typedef void (APIENTRY *PFNGLTEXCOORD1DPROC) (GLdouble s);
typedef void (APIENTRY *PFNGLTEXCOORD1DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD1FPROC) (GLfloat s);
typedef void (APIENTRY *PFNGLTEXCOORD1FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD1IPROC) (GLint s);
typedef void (APIENTRY *PFNGLTEXCOORD1IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD1SPROC) (GLshort s);
typedef void (APIENTRY *PFNGLTEXCOORD1SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORD2DPROC) (GLdouble s, GLdouble t);
typedef void (APIENTRY *PFNGLTEXCOORD2DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD2FPROC) (GLfloat s, GLfloat t);
typedef void (APIENTRY *PFNGLTEXCOORD2FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD2IPROC) (GLint s, GLint t);
typedef void (APIENTRY *PFNGLTEXCOORD2IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD2SPROC) (GLshort s, GLshort t);
typedef void (APIENTRY *PFNGLTEXCOORD2SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORD3DPROC) (GLdouble s, GLdouble t, GLdouble r);
typedef void (APIENTRY *PFNGLTEXCOORD3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD3FPROC) (GLfloat s, GLfloat t, GLfloat r);
typedef void (APIENTRY *PFNGLTEXCOORD3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD3IPROC) (GLint s, GLint t, GLint r);
typedef void (APIENTRY *PFNGLTEXCOORD3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD3SPROC) (GLshort s, GLshort t, GLshort r);
typedef void (APIENTRY *PFNGLTEXCOORD3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORD4DPROC) (GLdouble s, GLdouble t, GLdouble r, GLdouble q);
typedef void (APIENTRY *PFNGLTEXCOORD4DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLTEXCOORD4FPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat q);
typedef void (APIENTRY *PFNGLTEXCOORD4FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLTEXCOORD4IPROC) (GLint s, GLint t, GLint r, GLint q);
typedef void (APIENTRY *PFNGLTEXCOORD4IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLTEXCOORD4SPROC) (GLshort s, GLshort t, GLshort r, GLshort q);
typedef void (APIENTRY *PFNGLTEXCOORD4SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLTEXCOORDPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLTEXENVFPROC) (GLenum target, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLTEXENVFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLTEXENVIPROC) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLTEXENVIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLTEXGENDPROC) (GLenum coord, GLenum pname, GLdouble param);
typedef void (APIENTRY *PFNGLTEXGENDVPROC) (GLenum coord, GLenum pname, const GLdouble *params);
typedef void (APIENTRY *PFNGLTEXGENFPROC) (GLenum coord, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLTEXGENFVPROC) (GLenum coord, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLTEXGENIPROC) (GLenum coord, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLTEXGENIVPROC) (GLenum coord, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
// typedef void (APIENTRY *PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRY *PFNGLTRANSLATEDPROC) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLTRANSLATEFPROC) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLVERTEX2DPROC) (GLdouble x, GLdouble y);
typedef void (APIENTRY *PFNGLVERTEX2DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEX2FPROC) (GLfloat x, GLfloat y);
typedef void (APIENTRY *PFNGLVERTEX2FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEX2IPROC) (GLint x, GLint y);
typedef void (APIENTRY *PFNGLVERTEX2IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLVERTEX2SPROC) (GLshort x, GLshort y);
typedef void (APIENTRY *PFNGLVERTEX2SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEX3DPROC) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLVERTEX3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEX3FPROC) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLVERTEX3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEX3IPROC) (GLint x, GLint y, GLint z);
typedef void (APIENTRY *PFNGLVERTEX3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLVERTEX3SPROC) (GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY *PFNGLVERTEX3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEX4DPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY *PFNGLVERTEX4DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEX4FPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY *PFNGLVERTEX4FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEX4IPROC) (GLint x, GLint y, GLint z, GLint w);
typedef void (APIENTRY *PFNGLVERTEX4IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLVERTEX4SPROC) (GLshort x, GLshort y, GLshort z, GLshort w);
typedef void (APIENTRY *PFNGLVERTEX4SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEXPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void (APIENTRY *PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
typedef void (APIENTRY *PFNGLSAMPLEPASSPROC) (GLenum pass);
typedef void (APIENTRY *PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);
typedef void (APIENTRY *PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);
typedef void (APIENTRY *PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);
typedef void (APIENTRY *PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
typedef void (APIENTRY *PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY *PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY *PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY *PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRY *PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLvoid *img);
typedef void (APIENTRY *PFNGLACTIVETEXTUREPROC) (GLenum texture);
typedef void (APIENTRY *PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);
typedef void (APIENTRY *PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);
typedef void (APIENTRY *PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
typedef void (APIENTRY *PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint, GLint s, GLint t, GLint r);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
typedef void (APIENTRY *PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);
typedef void (APIENTRY *PFNGLFOGCOORDFPROC) (GLfloat coord);
typedef void (APIENTRY *PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
typedef void (APIENTRY *PFNGLFOGCOORDDPROC) (GLdouble coord);
typedef void (APIENTRY *PFNGLFOGCOORDDVPROC) (const GLdouble *coord);
typedef void (APIENTRY *PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);
typedef void (APIENTRY *PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);
typedef void (APIENTRY *PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRY *PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
typedef void (APIENTRY *PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
typedef void (APIENTRY *PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
typedef void (APIENTRY *PFNGLBLENDFUNCSEPARATEPROC) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
typedef void (APIENTRY *PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
typedef void (APIENTRY *PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
typedef void (APIENTRY *PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);
typedef void (APIENTRY *PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);
typedef void (APIENTRY *PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);
typedef void (APIENTRY *PFNGLWINDOWPOS2IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);
typedef void (APIENTRY *PFNGLWINDOWPOS2SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);
typedef void (APIENTRY *PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);
typedef void (APIENTRY *PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);
typedef void (APIENTRY *PFNGLWINDOWPOS3IVPROC) (const GLint *v);
typedef void (APIENTRY *PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY *PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
typedef void (APIENTRY *PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
typedef void (APIENTRY *PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
typedef GLboolean (APIENTRY *PFNGLISQUERYPROC) (GLuint id);
typedef void (APIENTRY *PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
typedef void (APIENTRY *PFNGLENDQUERYPROC) (GLenum target);
typedef void (APIENTRY *PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
typedef void (APIENTRY *PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
typedef GLboolean (APIENTRY *PFNGLISBUFFERPROC) (GLuint buffer);
typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
typedef void (APIENTRY *PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
typedef void (APIENTRY *PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
typedef GLvoid *(APIENTRY *PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
typedef GLboolean (APIENTRY *PFNGLUNMAPBUFFERPROC) (GLenum target);
typedef void (APIENTRY *PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid **params);
typedef void (APIENTRY *PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
typedef void (APIENTRY *PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
typedef void (APIENTRY *PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
typedef void (APIENTRY *PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
typedef void (APIENTRY *PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
typedef void (APIENTRY *PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
typedef void (APIENTRY *PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
typedef void (APIENTRY *PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
typedef void (APIENTRY *PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef void (APIENTRY *PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
typedef void (APIENTRY *PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
typedef void (APIENTRY *PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
typedef void (APIENTRY *PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
typedef void (APIENTRY *PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
typedef void (APIENTRY *PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
typedef void (APIENTRY *PFNGLDELETESHADERPROC) (GLuint shader);
typedef void (APIENTRY *PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
typedef GLuint (APIENTRY *PFNGLCREATESHADERPROC) (GLenum type);
typedef void (APIENTRY *PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
typedef void (APIENTRY *PFNGLCOMPILESHADERPROC) (GLuint shader);
typedef GLuint (APIENTRY *PFNGLCREATEPROGRAMPROC) (void);
typedef void (APIENTRY *PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
typedef void (APIENTRY *PFNGLLINKPROGRAMPROC) (GLuint program);
typedef void (APIENTRY *PFNGLUSEPROGRAMPROC) (GLuint program);
typedef void (APIENTRY *PFNGLDELETEPROGRAMPROC) (GLuint program);
typedef void (APIENTRY *PFNGLVALIDATEPROGRAMPROC) (GLuint program);
typedef void (APIENTRY *PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
typedef void (APIENTRY *PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
typedef void (APIENTRY *PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void (APIENTRY *PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void (APIENTRY *PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
typedef void (APIENTRY *PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
typedef void (APIENTRY *PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
typedef void (APIENTRY *PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void (APIENTRY *PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void (APIENTRY *PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void (APIENTRY *PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void (APIENTRY *PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLboolean (APIENTRY *PFNGLISSHADERPROC) (GLuint shader);
typedef GLboolean (APIENTRY *PFNGLISPROGRAMPROC) (GLuint program);
typedef void (APIENTRY *PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
typedef void (APIENTRY *PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
typedef void (APIENTRY *PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void (APIENTRY *PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef GLint (APIENTRY *PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
typedef void (APIENTRY *PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef void (APIENTRY *PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
typedef void (APIENTRY *PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
typedef void (APIENTRY *PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
typedef void (APIENTRY *PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
typedef void (APIENTRY *PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef GLint (APIENTRY *PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
typedef void (APIENTRY *PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
typedef void (APIENTRY *PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
typedef void (APIENTRY *PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRY *PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
